﻿using System.ComponentModel;
using System.IO;
using Zeta.Common.Xml;
using Zeta.XmlEngine;

namespace IncubusCC.Settings
{
    [XmlElement("BarbarianSettings")]
    public class BarbarianSettings : XmlSettings
    {
        public BarbarianSettings()
            : base(Path.Combine(Path.Combine(SettingsDirectory, "IncubusCC"), "BarbarianSettings.xml"))
        {
        }

        [XmlElement("SpamWarCry")]
        [DisplayName("Spam War Cry")]
        [Category("Tactics")]
        [DefaultValue(false)]
        [Description("Spam War Cry on cool down rather than check if you have the buff, False Default")]
        public bool SpamWarCry { get; set; }

        [XmlElement("FuriousChargeDreadnought")]
        [DisplayName("Furious Charge Dreadnought")]
        [Category("Might")]
        [DefaultValue(false)]
        [Description("Uses Dreadnought Rune to heal for 8% of your life, False Default")]
        public bool FCDreadnought { get; set; }

        [XmlElement("FuriousChargeDreadnoughtHP")]
        [DefaultValue(0.7)]
        public double FCDreadnoughtHP { get; set; }

        [XmlElement("LeapOCD")]
        [DefaultValue(false)]
        public bool LeapOCD { get; set; }

        [XmlElement("IgnorePainPct")]
        [Category("Defensive")]
        [DisplayName("Ignore Pain %")]
        [DefaultValue(0.6)]
        [Description("The health % on which to use ignore pain, 0.4 default")]
        public double IgnorePainPct { get; set; }

        [XmlElement("RageSkillsAoeCount")]
        [DisplayName("Rage Skills AoE Count")]
        [Category("Rage")]
        [DefaultValue(4)]
        [Description("The number of normal mobs in an area before you use Rage Skills (WotB ect..)")]
        public int RageSkillsAoeCount { get; set; }

        [XmlElement("OverpowerAoeCount")]
        [DisplayName("Overpower AoE Count")]
        [Category("Might")]
        [DefaultValue(2)]
        [Description("Number of Mobs to use Overpower on, will auto use on Elites")]
        public int OverpowerAoeCount { get; set; }

        [XmlElement("WhirlwindAoeCount")]
        [DisplayName("Whirlwind AoE Count")]
        [Category("Secondary")]
        [DefaultValue(2)]
        [Description("Number of Mobs to use Whirlwind on, will auto use on Elites")]
        public int WhirlwindAoeCount { get; set; }

        [XmlElement("LeapDistance")]
        [DisplayName("Leap Distance")]
        [Category("Movement")]
        [DefaultValue(35)]
        [Description("Minimum distance from the destination to use Leap")]
        public float LeapDistance { get; set; }

        [XmlElement("FuriosChargeDistance")]
        [DisplayName("Furios Charge Distance")]
        [Category("Movement")]
        [DefaultValue(30)]
        [Description("Minimum distance from the destination to use Furios Charge")]
        public float FuriosChargeDistance { get; set; }
    }
}
